This invention relates to the field of computing. More specifically, it relates to the methods and means for allowing computing devices to discover and share software services in a distributed computing environment.
As mobile and non-mobile computing devices become more prevalent, the need to share functionality and interact with other electronic devices increases. In isolation, such devices offer limited functionality because they have limited resources. Sharing is important, since it expands the functionality available to these devices.
Functionality is provided through the use of a service, which is an independent piece of software that performs a specific function on behalf of a client. By exchanging services, functionality is shared between devices. Service discovery refers to the process used by a device to find and load services on other devices.
Other approaches to service discovery have been described. However, many of these approaches are not suited for mobile and some non-mobile devices since they rely on a centralized server. The use of a centralized server is ill-suited for these devices because it impedes the use of ad-hoc networks, makes peer-to-peer interactions among devices more costly, is a single point of failure, and is difficult to correctly maintain state in highly dynamic environments.
Finally, since the bandwidth of a wireless network connection is inherently limited, a discovery mechanism is needed that wisely manages this resource. Existing approaches to service discovery waste bandwidth by using inefficient methods of describing services, loading services that are not used and duplicating service advertisements across devices.
Ad-hoc network: a temporary network operating without the aid of any established infrastructure or centralized administration.
Advertised Service: a service that is available for discovery by other devices.
Application: a software program that is not a service but may use one or more services.
Software Client: a software program that uses one or more services.
Device: an entity that is capable of hosting applications and/or services
Discovered Service: a service that is acquired from another device.
Enhanced Service Descriptor: a Service Descriptor that includes information about the physical location of the service code.
Essential Service: a service that is essential for the proper operation of the device on which it is hosted.
Implementation Proxy: The portion of a remote service that resides and executes on the client device, and that communicates with the remote service implementation.
Lazy Loading: a term referring to the policy of loading the service implementation of a discovered service as late as possible to conserve device resources.
Local Service: a service that executes entirely on the device on which it is hosted.
Mobile Code: a term referring to a software program that can be transferred between devices over a network.
Multicast Messaging Protocol: a messaging protocol with a one-to-many relationship between senders and receivers.
Network Component: any computing device connected to a network.
Optional Service: a service that is not an essential service.
Period of Validity: the duration for which a discovered service may be available to clients on a device.
Remote Service: a service providing access to functionality on another device.
Remote Service Implementation: The portion of a remote service that resides and executes on another device, and that communicates with the implementation proxy.
Service: a software program that performs one or more well-defined functions on behalf of one or more clients.
Service Adapter: an entity that interposes between clients and a service implementation.
Service Binding: the process used by a client to associate a service lookup request with a service lookup response.
Service Descriptor: an entity that describes a service.
Service Discovery: the process used to locate and use services on other devices.
Service Framework: an entity that establishes the environment used to host and manage services.
Service Implementation: the software instructions associated with a service.
Service Lookup: the process used by a client to request a service on a device.
Service Registration: the process of making a service available to clients on a device.
Service Removal: the process of making a service unavailable to clients on a device
Service Update: the process of replacing the service implementation of a service that is available to clients on a device.
It is therefore an aspect of the present invention to provide mobile and non-mobile devices with a method, apparatus or computer product to discover and use services in [ad-hoc] networks.
In a particular embodiment, middleware is provided that enables a device to use, discover and advertise services. Both the middleware and the services are advantageously written in Java, but the methods and means of using, discovering and advertising services could be applied in a different context.
In some embodiments, all software clients on the same device share a service implementation (in the case of a local service) or an implementation proxy (in the case of a remote service). Access to the service by a software client is generally restricted by a security policy. A security policy defines which services may be accessed by software clients on a device.
Another embodiment of the invention provides an article of manufacture comprising a computer usable medium having computer readable program code means embodied therein for effecting a method of the present invention.
In still another embodiment, the invention provides a computer program product comprising a computer usable medium having computer readable program code means embodied therein for causing a computer to effect a method of the present invention.
Still another embodiment the invention provides a program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps to effect a method of the present invention.